package com.topscomm.file.convert.aspose;

import java.io.InputStream;

import com.topscomm.basic.exception.ServiceException;
import com.topscomm.core.FileFormatEnum;
import com.topscomm.file.convert.IFileConvertService;
import com.topscomm.pub.util.ConvertUtil;

/**
 * apose文件格式转换
 * 
 * @description:
 * @author: donghang
 * @date: 2021年3月15日下午6:56:39
 * @modify:
 */
public class AsposeFileConvertService implements IFileConvertService {

	/**
	 * 转换格式，默认格式
	 * 
	 * @description:
	 * @param filePath
	 * @param targetPath
	 * @return
	 * @author: donghang
	 * @date: 2021年3月17日上午9:17:31
	 * @modify:
	 */
	@Override
	public String convertFile(String identifier, String filePath, String targetPath) throws Exception {
		return this.convertFile(identifier, filePath, targetPath, FileFormatEnum.HTML);
	}

	/**
	 * 通过路径转换文件
	 * 
	 * @description:
	 * @param filePath
	 * @param targetPath
	 * @param targetFileFormat
	 * @return
	 * @author: donghang
	 * @throws Exception
	 * @date: 2021年3月15日下午7:23:33
	 * @modify:
	 */
	@Override
	public String convertFile(String identifier, String filePath, String targetPath, FileFormatEnum targetFileFormat)
			throws Exception {
		if (targetFileFormat.code == FileFormatEnum.IMAGE.code) {
			// 转图片
			int imageCount = AsposeFileConvertToImg.fileToImg(identifier, filePath, targetPath);
			return ConvertUtil.convertToString(imageCount);
		}
		if (targetFileFormat.code == FileFormatEnum.PDF.code) {
			// 转pdf
			String convertFilePath = AsposeFileConvertToPdf.fileToPdf(identifier, filePath, targetPath);
			if (convertFilePath == null) {
				throw new ServiceException("不支持的文件类型！");
			}
			return convertFilePath;
		} else if (targetFileFormat.code == FileFormatEnum.HTML.code) {
			// 转html
			String convertFilePath = AsposeFileConvertToHtml.fileToHtml(identifier, filePath, targetPath);
			if (convertFilePath == null) {
				throw new ServiceException("不支持的文件类型！");
			}
			return convertFilePath;
		} else {
			throw new ServiceException("只支持转换为图片或pdf格式！");
		}
	}

	/**
	 * 通过流转换文件
	 * 
	 * @description:
	 * @param inputStream
	 * @param fileName
	 * @param targetFileFormat
	 * @return
	 * @author: donghang
	 * @date: 2021年3月15日下午7:25:44
	 * @modify:
	 */
	@Override
	public String convertFile(String identifier, InputStream inputStream, String fileName,
			FileFormatEnum targetFileFormat) {
		return null;
	}

	/**
	 * 封面
	 * 
	 * @description:
	 * @param filePath
	 * @param targetPath
	 * @param imagePrefix
	 * @return
	 * @throws Exception
	 * @author: donghang
	 * @date: 2021年3月30日上午9:33:39
	 * @modify:
	 */
	@Override
	public String getFileEnvelope(String identifier, String filePath, String targetPath, String imagePrefix) {
		try {
			AsposeFileConvertToImg.fileToCoverImg(identifier, filePath.toString(), targetPath.toString());
		} catch (Exception e) {
			throw new ServiceException("转换失败");
		}
		return targetPath;
	}

}
